package com.example.springbootmqdemocustumer.service.ack;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

/**
 * Classname: FanoutEmallConsumer
 * Description:
 *
 * @Author: Jam
 * @Create 2022/11/28 - 19:40
 * @Version 1.0
 */
@Service
//消费：监听可靠消费 失败后 转发的死信队列
//@RabbitListener(queues = {"dead.direct.queue"})
public class DeadACKConsumer {
//    @RabbitHandler
    public void messagerevice(String message){
        //xml设置消息重发 使用了trycatch 重置的次数将无效

        try {
            // 此处省略发邮件的逻辑
            System.out.println("转发后的死信队列 收到了消息：------------->" + message);
            int i = 1/0;
            //手动ack告诉已正确消费
            //channel.basicAck(tag,false);
        } catch (Exception e) {
            //转发后的死信队列 仍多次报错 人工干预处理
            System.out.println("人工干预");

            System.out.println("发短信预警");
            System.out.println("错误消息备份便于排查");
            System.out.println("错误消息备份便于排查");
            //nack移除 参数1：消息tag 参数2 ：false 多条处理 参数3:true 重发
            //channel.basicNack(tag,false,false);
        }

    }
}
